package com.briup.bookstore.common.constraints;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

/**
 * 构建DoubleMin校验器，校验Double类型的属性是否大于等于指定值
 */
public class DoubleMinConstraintValidator implements ConstraintValidator<DoubleMin, Double> {

    private double doubleMin;

    @Override
    public void initialize(DoubleMin constraintAnnotation) {
        // 初始化校验器，获取DoubleMin注解的value属性值
        doubleMin = constraintAnnotation.value();
    }

    /**
     * 校验Double类型的属性是否大于等于指定值
     *
     * @param value   需要被校验的Double类型的属性值
     * @param context 校验上下文
     * @return 校验的结构，true表示校验通过，false表示校验失败
     */
    @Override
    public boolean isValid(Double value, ConstraintValidatorContext context) {
        // 判断Double类型的属性值是否大于等于指定值
        if (value == null) {
            return true;
        }
        return value >= doubleMin;
    }
}
